import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    count: 0,
    status: '123'
  },
  // 用于对store中的数据进行加工处理形成新的数据，不会修改原有的数据
  getters: {
    showNum (state) {
      return '当前最新的数量是：['+state.count+']'
    }
  },
  // 只有mutations 有权利修改 state内的值
  mutations: {
    add (state) {
      state.count ++
    },
    lower (state) {
      state.count --
    },
    addN (state, step) {
      state.count += step
    },
    lowerN (state, step) {
      state.count -= step
    }
  },
  // actions 主要存放异步的代码
  actions: {
    addAsync (context) {
      setTimeout(() => {
        context.commit('add')
      }, 2000)
    },
    addAsync1 (context, step) {
      setTimeout(() => {
        context.commit('addN', step)
      }, 2000)
    },
    lowerNAsync (context, step) {
      setTimeout (() => {
        context.commit('lowerN', step)
      }, 1000)
    }
  },
  modules: {
  }
})
